scratch base image 建立最小 image
之前 build 的許多 image 都是經由 ubuntu:20.04 一起發佈的
其實,一般的任務並不需要這麼多的 binary檔 以及 package
可以試看看 scratch image 來建立一個瘦瘦的 image
準備一個 demo.c 檔
#include <stdio.h>
void main(){
printf("statically built for demo");
}
準備一個 dockerfile
FROM scratch
ADD demo /
CMD ["/demo"]
scratch 是一個空的 image ,裡面沒有任何的 layer 在上面,非常輕量
編譯 demo.c 成為執行檔
docker container run --rm -v ${PWD}:/src -w /src gcc:7.2 gcc -static -o demo demo.c
看看執行檔
ls -lh demo
file -b demo
大小為 927K
從剛剛準備的 dockerfile build 一個 image
docker image build -t scratch-demo .
run & 看看 image
docker container run --rm scratch-demo
docker images|grep scratch
大小為 949kB
這個 image 當中就只有 這個靜態執行檔,沒有任何的作業系統 or 其他多安裝的東西